using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._DataManagementTools._Package._SceneLayers
{
    /// <summary>
    /// <para>Create Point Scene Layer Package</para>
    /// <para>Creates a point scene layer package (.slpk file) from a point feature layer.</para>
    /// <para>从点要素图层创建点场景图层包（.slpk 文件）。</para>
    /// </summary>    
    [DisplayName("Create Point Scene Layer Package")]
    public class CreatePointSceneLayerPackage : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public CreatePointSceneLayerPackage()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_dataset">
        /// <para>Input Dataset</para>
        /// <para>The input point feature layer.</para>
        /// <para>输入点要素图层。</para>
        /// </param>
        /// <param name="_out_slpk">
        /// <para>Output Scene Layer Package</para>
        /// <para>The output scene layer package (.slpk).</para>
        /// <para>输出场景图层包 （.slpk）。</para>
        /// </param>
        public CreatePointSceneLayerPackage(object _in_dataset, object _out_slpk)
        {
            this._in_dataset = _in_dataset;
            this._out_slpk = _out_slpk;
        }
        public override string ToolboxName => "Data Management Tools";

        public override string ToolName => "Create Point Scene Layer Package";

        public override string CallName => "management.CreatePointSceneLayerPackage";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_in_dataset, _out_slpk, _out_coor_system, _transform_method];

        /// <summary>
        /// <para>Input Dataset</para>
        /// <para>The input point feature layer.</para>
        /// <para>输入点要素图层。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Dataset")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_dataset { get; set; }


        /// <summary>
        /// <para>Output Scene Layer Package</para>
        /// <para>The output scene layer package (.slpk).</para>
        /// <para>输出场景图层包 （.slpk）。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Scene Layer Package")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _out_slpk { get; set; }


        /// <summary>
        /// <para>Output Coordinate System</para>
        /// <para><xdoc>
        ///   <para>The coordinate system of the output scene layer package. It can be any projected or custom coordinate system. Supported geographic coordinate systems include WGS 1984 and China Geodetic Coordinate System 2000. WGS 1984 and EGM96 Geoid are the default horizontal and vertical coordinate systems, respectively. The coordinate system can be specified in any of the following ways:
        ///   <bulletList>
        ///     <bullet_item>Specify the path to a .prj file.  </bullet_item><para/>
        ///     <bullet_item>Reference a dataset with the desired coordinate system.  </bullet_item><para/>
        ///     <bullet_item>Use an arcpy.SpatialReference object.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>输出场景图层包的坐标系。它可以是任何投影坐标系或自定义坐标系。支持的地理坐标系包括 WGS 1984 和中国大地坐标系 2000。WGS 1984 和 EGM96 大地水准面分别是默认的水平坐标系和垂直坐标系。坐标系可以通过以下任一方式指定：
        ///   <bulletList>
        ///     <bullet_item>指定 .prj 文件的路径。</bullet_item><para/>
        ///     <bullet_item>使用所需坐标系引用数据集。</bullet_item><para/>
        ///     <bullet_item>使用 arcpy。SpatialReference 对象。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Coordinate System")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _out_coor_system { get; set; } = null;


        /// <summary>
        /// <para>Geographic Transformation</para>
        /// <para><xdoc>
        ///   <para>The datum transformation method that will be used when the input layer's coordinate system uses a datum that differs from the output coordinate system. All transformations are bidirectional, regardless of the direction implied by their names. For example, NAD_1927_to_WGS_1984_3 will work correctly even if the datum conversion is from WGS 1984 to NAD 1927.</para>
        ///   <para>The ArcGIS Coordinate System data is required for vertical datum transformations between ellipsoidal and gravity-related and two gravity-related datums.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>当输入图层的坐标系使用与输出坐标系不同的基准时将使用的基准变换方法。所有转换都是双向的，无论其名称所暗示的方向如何。例如，即使基准面从 WGS 1984 转换为 NAD 1927，NAD_1927_to_WGS_1984_3 也能正常工作。</para>
        ///   <para>椭球体与重力相关基准面以及两个重力相关基准面之间的垂直基准变换需要 ArcGIS 坐标系数据。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Geographic Transformation")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _transform_method { get; set; } = null;


        public CreatePointSceneLayerPackage SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}